C# 设置属性返回的值是多少?
我只是写了“奇怪”的代码,但是构建成功了。 代码: 所以我想知道为什么set属性返回值“@aa”? 我认为这不是SQL参数问题,所以我编写了其他示例代码: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"); 我想这是你觉得奇怪的
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);