首页 / C# / 在C#中摆脱“静态”引用
在C#中摆脱“静态”引用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C#中摆脱“静态”引用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2197字,纯文字阅读大概需要4分钟。
内容图文
我最近开始学习C#,但遇到了烦人的问题.我希望程序中的所有函数都可以使用的每个变量都必须在每个函数前面放置一个“静态”.我想知道的是如果可能的话如何避免这种情况?
另外,小问题:在函数内部创建公共变量?
这就是我的程序现在的样子,我希望基本上保持这样,而不必在任何地方添加“静态”:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Threading;
using System.Net.Sockets;
namespace NetworkExercise
{
class Client
{
public IPAddress addr;
public int port;
public string name;
public Thread thread;
public TcpClient tcp;
public NetworkStream stream;
public Client(IPAddress addr, int port, string name, NetworkStream stream)
{
}
}
class Program
{
//NETWORK
TcpListener tcpListener;
Thread listenThread;
ASCIIEncoding encoder = new ASCIIEncoding();
//DATA
byte[] buffer = new byte[4096];
string servIp;
int servPort;
//CLIENT MANAGEMENT
int clientNum;
static void Main(string[] args)
{
beginConnect();
}
public void beginConnect()
{
Console.Write("Server IP (leave blank if you're the host): ");
servIp = Console.ReadLine();
Console.Write("Port: ");
servPort = Console.Read();
tcpListener = new TcpListener(IPAddress.Any, servPort);
listenThread = new Thread(new ThreadStart(listenForClients));
listenThread.Start();
}
public void listenForClients()
{
tcpListener.Start();
Console.WriteLine("Listening for clients...");
while (true)
{
Client cl = new Client(null, servPort, null, null);
cl.tcp = tcpListener.AcceptTcpClient();
ThreadStart pts = delegate { handleClientCom(cl); };
cl.thread = new Thread(pts);
cl.thread.Start();
}
}
public void handleClientCom(Client cl)
{
cl.stream = cl.tcp.GetStream();
}
}
}
解决方法:
使用全局变量通常被认为是不好的做法,因为它们会增加耦合并损害可维护性,因此如果您经常使用它们,则应重新考虑您的方法.如果你的所有代码都使用相同的几个变量,那么你可能很难调试它,因为你必须跟踪系统的全局状态,而你不知道程序的哪个部分已经修改它.
此外,出于类似的原因,您几乎不应该在类中使用公共字段.这样做允许客户端代码直接绑定到类的实现中,这样如果更改类的内部机制,则客户端代码会中断.你应该使用的是properties.
但是,要回答您的问题:不,如果您希望成员可以全局访问,则必须是静态的.否则它只存在于一个对象上,您需要一个引用才能访问它.
您可能想要阅读的一些关键想法是dependency injection和encapsulation.
内容总结
以上是互联网集市为您收集整理的在C#中摆脱“静态”引用全部内容,希望文章能够帮你解决在C#中摆脱“静态”引用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。