Enz*_*zio 0 c# unity-game-engine visual-studio unityscript
private static field numberOfPlayersInOfflineGame有一个属性.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameData
{
private static int numberOfPlayersInOfflineGame;
int NumberOfPlayersInOfflineGame
{
get
{
return numberOfPlayersInOfflineGame;
}
set
{
numberOfPlayersInOfflineGame = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我试图从另一个类访问上述字段的值.但是你可以看到我无法访问它.
我正在使用Unity的Visual Studio社区.
这是private字段的目的- 它们不能从其他类访问.但是,制造这个领域public并非如此.通常,C#开发人员将该字段包装在public属性中,该属性可以具有实现的转换验证.这几乎就是你所做的,你没有明确地做出属性public,这是必要的.
默认会员可见性是private您应该建立您的财产public:
public class GameData
{
private static int numberOfPlayersInOfflineGame;
public static int NumberOfPlayersInOfflineGame
{
get
{
return numberOfPlayersInOfflineGame;
}
set
{
numberOfPlayersInOfflineGame = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我反对@Agent_Orange建议:不要让你的领域public也好!这完全违背了创建财产的目的.然后,任何代码都可以绕过属性设置器中的潜在验证,以将numberOfPlayersInOfflineGame任何意外值设置为-100.
正如@Jon Skeet所说 - 如果你没有在属性的getter和setter中执行任何其他任务,你可以通过使代码成为自动属性来简化代码:
public class GameData
{
public static int NumberOfPlayersInOfflineGame { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在类代码和类外部使用属性而不是字段.如果您以后决定添加一些验证,您可以随时返回由私有字段支持的属性.
| 归档时间: |
|
| 查看次数: |
1400 次 |
| 最近记录: |