如何使用参数并以C#返回?
就我的一生而言,我看过的每一篇教程,看过的每一段视频,读过的每一本书,我都无法理解这些东西到底是如何工作的 我看到通过值传递值,通过引用传递值,通过值传递引用,通过引用传递引用。有人能用最基本的例子帮助我理解这些吗如何使用参数并以C#返回?,c#,types,parameters,return,C#,Types,Parameters,Return,就我的一生而言,我看过的每一篇教程,看过的每一段视频,读过的每一本书,我都无法理解这些东西到底是如何工作的 我看到通过值传递值,通过引用传递值,通过值传递引用,通过引用传递引用。有人能用最基本的例子帮助我理解这些吗 关于退货类型,同样的问题。它们是如何工作的?在这方面你能找到的最好的资源是Jon Skeet。它给出了一个非常清楚的解释。如果在阅读之后你仍然有问题,你应该试着问得更具体一些,这样更容易帮助你 你能在这本书上找到的最好的资源是Jon Skeet。它给出了一个非常清楚的解释。如果在阅读
关于退货类型,同样的问题。它们是如何工作的?在这方面你能找到的最好的资源是Jon Skeet。它给出了一个非常清楚的解释。如果在阅读之后你仍然有问题,你应该试着问得更具体一些,这样更容易帮助你 你能在这本书上找到的最好的资源是Jon Skeet。它给出了一个非常清楚的解释。如果在阅读之后你仍然有问题,你应该试着问得更具体一些,这样更容易帮助你 让我们备份一下,从变量开始 变量总是包含一些特定的信息。对于值类型,包含的信息直接是整个值。对于引用类型,包含的信息只是对实际值所在的其他内存位置的引用 在.Net中,您可以假装变量只以一种方式传递给函数或从函数返回:按值传递。暂时忘记通过引用传递-它只会混淆事情。按值传递变量时,该变量直接保存的全部信息将复制到函数中。诀窍在于理解这对引用类型意味着什么,也就是获取引用的副本 我可以用一个简单的代码示例演示:
void Test(int x, dynamic y)
{
x = 3;
y.a = "four";
y.b = "five";
y = new {a = "six", b = "seven"}; // this will have no effect outside the function
}
int x = 2; // value type
var y = new {a = "one", b="two"}; //reference type
// both x and y are passed by value, but y is a reference type so the reference itself is copied
Test(x, y);
Console.WriteLine(x); //writes 2, because the test function is working with a copy
Console.WriteLine(y.a); //writes four
Console.WriteLine(y.b); //writes five
对于引用类型,您可以强制执行真正的“按引用传递”,但是除非您真正知道发生了什么,否则永远不应该执行此操作。看起来是这样的:
void Test(ref dynamic y)
{
y = new {a = "three", b="four"};
}
var y = new {a = "one", b="two"};
Test(y);
Console.WriteLine(y.a); //prints one
Console.WriteLine(y.b); //prints two
输出仍然是“1”和“2”,因为函数替换了局部变量的引用。调用函数的代码仍然引用原始内存位置,因此输出原始值。让我们备份一点,从变量开始 变量总是包含一些特定的信息。对于值类型,包含的信息直接是整个值。对于引用类型,包含的信息只是对实际值所在的其他内存位置的引用 在.Net中,您可以假装变量只以一种方式传递给函数或从函数返回:按值传递。暂时忘记通过引用传递-它只会混淆事情。按值传递变量时,该变量直接保存的全部信息将复制到函数中。诀窍在于理解这对引用类型意味着什么,也就是获取引用的副本 我可以用一个简单的代码示例演示:
void Test(int x, dynamic y)
{
x = 3;
y.a = "four";
y.b = "five";
y = new {a = "six", b = "seven"}; // this will have no effect outside the function
}
int x = 2; // value type
var y = new {a = "one", b="two"}; //reference type
// both x and y are passed by value, but y is a reference type so the reference itself is copied
Test(x, y);
Console.WriteLine(x); //writes 2, because the test function is working with a copy
Console.WriteLine(y.a); //writes four
Console.WriteLine(y.b); //writes five
对于引用类型,您可以强制执行真正的“按引用传递”,但是除非您真正知道发生了什么,否则永远不应该执行此操作。看起来是这样的:
void Test(ref dynamic y)
{
y = new {a = "three", b="four"};
}
var y = new {a = "one", b="two"};
Test(y);
Console.WriteLine(y.a); //prints one
Console.WriteLine(y.b); //prints two
输出仍然是“1”和“2”,因为函数替换了局部变量的引用。调用函数的代码仍然具有对原始内存位置的引用,因此输出原始值。首先,您只看到按值传递或按引用传递。没有别的了。 现在要理解这个概念,假设您有一组数字框,标记为1、2、3、4等。这些框包含一些数据。 然后想象你有一张纸的清单,上面写着同样的东西,也就是一个索引,有1,2,3,4 现在,您希望将框中的一个内容(数据)传递给您的朋友。 你可以用这两种方法中的一种
在理解返回类型之前,必须理解数据类型。从这里开始。首先,您只看到按值传递或按引用传递。没有别的了。 现在要理解这个概念,假设您有一组数字框,标记为1、2、3、4等。这些框包含一些数据。 然后想象你有一张纸的清单,上面写着同样的东西,也就是一个索引,有1,2,3,4 现在,您希望将框中的一个内容(数据)传递给您的朋友。 你可以用这两种方法中的一种
在理解返回类型之前,必须理解数据类型。从这里开始。人们一直告诉我要问得更具体一些,但我不明白“告诉我如何以最基本的方式使用这些东西”是如何不具体的>\u>@Bill:问题是你的问题有点像问“我如何在代数中使用变量?”--这是一个简单的问题,但是它有一个不太简单的答案,这种类型的网站不太适合。人们一直告诉我要问得更具体一些,但我不知道“告诉我如何以最基本的方式使用这些东西”是不是具体的>\u>@Bill:问题是你的问题有点像问“我如何在代数中使用变量?”——这是一个简单的问题