gpt4 book ai didi

c# - 将未初始化的参数传递给方法时的 ref 关键字

转载 作者:太空狗 更新时间:2023-10-30 00:52:20 25 4
gpt4 key购买 nike

WinRT 项目中的BindableBase 抽象基类定义如下:

[Windows.Foundation.Metadata.WebHostHidden]
public abstract class BindableBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)
{
if (object.Equals(storage, value)) return false;

storage = value;
this.OnPropertyChanged(propertyName);
return true;
}

protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var eventHandler = this.PropertyChanged;
if (eventHandler != null)
{
eventHandler(this, new PropertyChangedEventArgs(propertyName));
}
}
}

没关系。

现在我看到很多文章试图实现这个类,做这样的事情:

private  int _timeEstimate;
public int TimeEstimate
{
get { return this._timeEstimate; }
set { this.SetProperty(ref this._timeEstimate, value); }
}

_timeEstimate 未初始化,如何使用 ref 传递?!有什么我想念的吗?这真的让我很沮丧,我错过了什么,我什至在微软的考试引用准备书中找到了同样的文字!

最佳答案

_timeEstimate 是一个字段。在class 的构造过程中(在构造函数触发之前),字段被显式初始化为它们的零值。对于 struct,它们必须在构造函数中显式初始化,或者如果使用默认构造函数初始化类型则为零(旁注:技术上 struct 不有默认的构造函数,但 C# 和 IL 对此意见不一,所以为了方便起见,我们将 new SomeStruct() 称为构造函数 ;p)

基本上:它被初始化了。

未初始化的是局部变量

关于c# - 将未初始化的参数传递给方法时的 ref 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com