C# 设置什么值 属性 return?
what value C# set property return?
我只是写了"strange"代码,但是构建成功了。
代码:
SqlCommand cmd = null;
SqlParameter p1 = new SqlParameter();
// s="@aa"
var s = (p1.ParameterName = "@aa");
cmd.Parameters.AddWithValue(p1.ParameterName = "@aa",p1.Value = "aaa");
所以我想知道为什么设置 属性 return 值“@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 Simple assignment
(...)
The result of a simple assignment expression is the value assigned to the left operand. The result has the same type as the left operand and is always classified as a value.
这意味着赋值运算符 returns 被赋值的值。
属性结合了字段和方法的各个方面。对于对象的用户,属性 似乎是一个字段,访问 属性 需要相同的语法。对于 class 的实现者来说,属性 是一个或两个代码块,代表一个 get 访问器 and/or 一个 set 访问器。读取 属性 时执行 get 访问器的代码块;当 属性 被赋予一个新值时,set 访问器的代码块被执行。没有设置访问器的 属性 被认为是只读的。没有 get 访问器的 属性 被认为是只写的。具有两个访问器的 属性 是可读写的。
您可以从这里找到更多信息:https://msdn.microsoft.com/en-us/library/w86s7x04.aspx
当您分配一个值时,您仍然可以使用分配的值,因此使用您的第二个示例,您做了与此非常相似的事情:
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);
我只是写了"strange"代码,但是构建成功了。 代码:
SqlCommand cmd = null;
SqlParameter p1 = new SqlParameter();
// s="@aa"
var s = (p1.ParameterName = "@aa");
cmd.Parameters.AddWithValue(p1.ParameterName = "@aa",p1.Value = "aaa");
所以我想知道为什么设置 属性 return 值“@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 Simple assignment
(...)
The result of a simple assignment expression is the value assigned to the left operand. The result has the same type as the left operand and is always classified as a value.
这意味着赋值运算符 returns 被赋值的值。
属性结合了字段和方法的各个方面。对于对象的用户,属性 似乎是一个字段,访问 属性 需要相同的语法。对于 class 的实现者来说,属性 是一个或两个代码块,代表一个 get 访问器 and/or 一个 set 访问器。读取 属性 时执行 get 访问器的代码块;当 属性 被赋予一个新值时,set 访问器的代码块被执行。没有设置访问器的 属性 被认为是只读的。没有 get 访问器的 属性 被认为是只写的。具有两个访问器的 属性 是可读写的。
您可以从这里找到更多信息:https://msdn.microsoft.com/en-us/library/w86s7x04.aspx
当您分配一个值时,您仍然可以使用分配的值,因此使用您的第二个示例,您做了与此非常相似的事情:
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);