Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置属性返回的值是多少?_C#_Properties - Fatal编程技术网

C# 设置属性返回的值是多少?

C# 设置属性返回的值是多少?,c#,properties,C#,Properties,我只是写了“奇怪”的代码,但是构建成功了。 代码: 所以我想知道为什么set属性返回值“@aa”? 我认为这不是SQL参数问题,所以我编写了其他示例代码: TestClass t1 = new TestClass(); // result="testName" var result = (t1.Name = "testName"); string returnName = t1.TestName(t1.Name = "testName"); 我想这是你觉得奇怪的

我只是写了“奇怪”的代码,但是构建成功了。 代码:

所以我想知道为什么set属性返回值“@aa”? 我认为这不是SQL参数问题,所以我编写了其他示例代码:

    TestClass t1 = new TestClass();
    // result="testName"
    var result = (t1.Name = "testName");
    string returnName = t1.TestName(t1.Name = "testName");

我想这是你觉得奇怪的一句话:

var s = (p1.ParameterName = "@aa");
从C#规范:

7.17.1简单作业

(……)

简单赋值表达式的结果是赋值给左操作数的值。结果的类型与左操作数的类型相同,并且始终分类为值


这意味着赋值运算符返回已赋值。

属性结合了字段和方法的各个方面。对于对象的用户来说,属性似乎是一个字段,访问该属性需要相同的语法。对于类的实现者来说,属性是一个或两个代码块,表示get访问器和/或set访问器。读取属性时执行get访问器的代码块;为属性分配新值时,将执行集合访问器的代码块。没有集合访问器的属性被视为只读。没有get访问器的属性被视为只写属性。同时具有两个访问器的属性是读写属性


您可以从这里找到更多信息:

当您指定一个值时,您仍然可以使用指定的值,因此使用您的第二个示例,您执行了与此非常类似的操作:

TestClass t1 = new TestClass();
// result="testName"
t1.Name = "testName"
var result = (t1.Name);
t1.Name = "testName"
string returnName = t1.TestName(t1.Name);
在您的第一个示例中,您所做的与此基本相同:

SqlCommand cmd = null;
SqlParameter p1 = new SqlParameter();
// s="@aa"
p1.ParameterName = "@aa";
var s = (p1.ParameterName);

p1.ParameterName = "@aa";
p1.Value = "aaa";
cmd.Parameters.AddWithValue(p1.ParameterName, p1.Value);

@我不这么认为。我写的另一个代码是:TestClass t1=newtestclass();/result=“testName”var result=(t1.Name=“testName”);字符串returnName=t1.TestName(t1.Name=“TestName”);或者是
cmd.Parameters.AddWithValue(p1.ParameterName=“@aa”,p1.Value=“aaa”)行,这基本上是做同样的事情。是的,这是同样的事情。@ScottChamberlain“…总是被归类为一个值”。被归类为一种价值而不是平均价值类型。对吗?@James:对。“归类为价值”的意图旨在表明该事物未归类为变量。例如,
a=((b=c)=10)
是不合法的,因为
(b=c)
是一个值,而不是一个变量,因此不能给它赋值10。这与问题无关。。。这是MSDN的清晰复制粘贴。
SqlCommand cmd = null;
SqlParameter p1 = new SqlParameter();
// s="@aa"
p1.ParameterName = "@aa";
var s = (p1.ParameterName);

p1.ParameterName = "@aa";
p1.Value = "aaa";
cmd.Parameters.AddWithValue(p1.ParameterName, p1.Value);