Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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#_Pointers_Clone - Fatal编程技术网

C#如何禁用指针的使用(如何克隆不可克隆的变量)

C#如何禁用指针的使用(如何克隆不可克隆的变量),c#,pointers,clone,C#,Pointers,Clone,问题 你好,斯塔克。我遇到了一个问题。 尽管C#会自动启用指针的使用,这非常有用,但我需要在一秒钟内克隆一个不可克隆的变量(int) 我的代码 我有一个 public int FirstLine { get { return Convert.ToInt32(File.ReadAllLines(@"example.txt")[0]); } set { File.WriteAllLines(@"example.txt", new string[1]{ value.ToStrin

问题

你好,斯塔克。我遇到了一个问题。 尽管C#会自动启用指针的使用,这非常有用,但我需要在一秒钟内克隆一个不可克隆的变量(int)

我的代码

我有一个

public int FirstLine 
{ 
    get { return Convert.ToInt32(File.ReadAllLines(@"example.txt")[0]); } 
    set { File.WriteAllLines(@"example.txt", new string[1]{ value.ToString() }); } 
}
我使用的是一个变量,当被访问读取时,它会从文件中抓取,如果被访问写入,它会将值写入到文件中,以便有一个变量根据需要更新并保存

我知道示例代码说起来非常“不安全”,我只是简单介绍一下我正在做的事情。在代码的其他地方,我访问此变量:

int GettingVariable=FirstLine

由于C#自动使用指针,
GettingVariable
将根据文件需求自动更新,这不是我想要的

我想要什么作为答案

我希望能够克隆int,禁用指针使用,并且不必使用
不安全的void
(如果可能)。由于没有内置的int.Clone(),我如何管理它

由于C#自动使用指针,
GettingVariable
将根据文件需求自动更新,这不是我想要的

事实并非如此。该代码没有使用任何指针,并且所涉及的值被复制,并且不会观察到对该文件或访问该文件的对象的任何更改

我希望能够克隆int,禁用指针使用,并且不必使用
不安全的void
(如果可能)。由于没有内置的int.Clone(),我如何管理它

使用您已有的代码。它已经有了你想要的语义

由于C#自动使用指针,
GettingVariable
将根据文件需求自动更新,这不是我想要的

事实并非如此。该代码没有使用任何指针,并且所涉及的值被复制,并且不会观察到对该文件或访问该文件的对象的任何更改

我希望能够克隆int,禁用指针使用,并且不必使用
不安全的void
(如果可能)。由于没有内置的int.Clone(),我如何管理它


使用您已有的代码。它已经具备了您所要求的语义。

Servy绝对正确

为了让您了解更多的背景知识,C#并不像您所描述的那样“使用指针”——
class
对象的行为类似于双指针(即
**MyClass myVariable
),特别是在处理
ref
out
方法时,而
struct
对象表现出上述语义


不要把所有C语言看作是C++的包装器,而应该熟悉C语言的语义,尤其是当你达到了你已经达到的目标时。祝你好运

Servy是绝对正确的

为了让您了解更多的背景知识,C#并不像您所描述的那样“使用指针”——
class
对象的行为类似于双指针(即
**MyClass myVariable
),特别是在处理
ref
out
方法时,而
struct
对象表现出上述语义

不要把所有C语言看作是C++的包装器,而应该熟悉C语言的语义,尤其是当你达到了你已经达到的目标时。祝你好运

由于C#会自动使用指针,因此GettingVariable将 自动更新文件的要求,这不是我想要的

这就是我认为你错的地方。这是因为您使用的是属性而不是变量,我假设每次都访问属性,与指针无关。例如,使用以下代码:

public int FirstLine 
{ 
    get { return Convert.ToInt32(File.ReadAllLines(@"example.txt")[0]);
}
每次尝试获取Firstline的值时,它都将运行该代码。但是如果你已经有了这个值,它就不会改变。例如:

object.FirstLine = 5;
int firstlineA = object.FirstLine; //Returns 5
object.FirstLine = 10;
int firstLineB = object.FirstLine; //Returns 10
int firstlineC = firstlineA; //Still returns 5
由于C#会自动使用指针,因此GettingVariable将 自动更新文件的要求,这不是我想要的

这就是我认为你错的地方。这是因为您使用的是属性而不是变量,我假设每次都访问属性,与指针无关。例如,使用以下代码:

public int FirstLine 
{ 
    get { return Convert.ToInt32(File.ReadAllLines(@"example.txt")[0]);
}
每次尝试获取Firstline的值时,它都将运行该代码。但是如果你已经有了这个值,它就不会改变。例如:

object.FirstLine = 5;
int firstlineA = object.FirstLine; //Returns 5
object.FirstLine = 10;
int firstLineB = object.FirstLine; //Returns 10
int firstlineC = firstlineA; //Still returns 5
对不起,我的VisualStudio过去(现在仍然)表现得非常怪异,没有进行构建。由于它的行为怪异,它构建了一个更旧的版本,由于我输入的代码不起作用,它触发了这种逻辑在我的大脑中继续,并提出了一个问题。我非常抱歉浪费您的时间。对不起,我的Visual Studio(现在仍然)表现得非常怪异,没有进行构建。由于它的行为怪异,它构建了一个更旧的版本,由于我输入的代码不起作用,它触发了这种逻辑在我的大脑中继续,并提出了一个问题。非常抱歉浪费你的时间。