哪个声明更好?

Iva*_*nov 1 c# oop

我将在编程中改变我的C#风格(我一直在使用'public static'代表变量,方法 - 一切).

我的问题:

public class WinSock
{
    public Socket sock;
    public byte[] data;
    .....
}

var data = new byte[2058];
data = WinSock.data;
Run Code Online (Sandbox Code Playgroud)

或者这个:

private class WinSock
{
    private Socket sock;
    private byte[] data;
    .....
    public byte[] getdata()
    {
        get {return data;}
    }
}

WinSock ws = new WinSock();
var data = new byte[2058];
data = ws.getdata();
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,都可以从其他类访问数据和sock变量.

两个声明中哪一个更好?

Ste*_*ger 11

一般来说,公开领域绝不是一个好主意.

由于getdata是一个属性,因此应将其称为Data.

private class WinSock
{
    private Socket sock;
    private byte[] data;
    .....
    public byte[] Data
    {
        get { return data; }
    }
}
Run Code Online (Sandbox Code Playgroud)

公共接口由公共属性和方法组成,应确保状态(字段)永远不会出现矛盾.该班负责这些领域.它不应该允许任何人直接写入它.这就是封装的内容.