有人可以让我知道如何在C#中的另一个类中实例化和反对。
这里的前3个字符串变量(secureID,EmailAddress和PhoneNum)我想将它们放在另一个类中,并在这个类中为它们赋值。在c ++中我们会使用友元类,找不到类似C#的东西。
进一步澄清:
我想接受这段代码:
static string SecureId;
static string EmailAddress;
static string PhoneNum;
并将其放在自己的班级中。让我们称之为公共类myMsg。我想在下面的类程序中实现myMsg,并能够为其字段分配值myMsg.SecureId = strDataParse [0]。我在通过类程序访问myMsg字段时遇到问题。希望有所帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace EmailSMSSocketApp
{
class Program
{
static string SecureId;
static string EmailAddress;
static string PhoneNum;
static byte[] Buffer { get; set; }
static Socket _socket;
static void Main(string[] args)
{
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_socket.Bind(new IPEndPoint(IPAddress.Any, 1234));
_socket.Listen(100);
Socket accepted = _socket.Accept();
Buffer = new byte[accepted.SendBufferSize];
int bytesRead = accepted.Receive(Buffer);
byte[] formatted = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
{
formatted[i] = Buffer[i];
}
string strData = Encoding.ASCII.GetString(formatted);
//Console.Write(strData + " ASCII to strData" + "\r\n");
string[] strDataParse = strData.Split(',');
foreach (string word in strDataParse)
{
// Console.WriteLine(word);
SecureId = strDataParse[0];
EmailAddress = strDataParse[1];
PhoneNum = strDataParse[2];
};
Console.WriteLine(SecureId + " Outside loop");
Console.WriteLine(EmailAddress + " Outside loop");
Console.WriteLine(PhoneNum + " Outside loop");
Console.Read();
_socket.Close();
accepted.Close();
}
}
}
答案 0 :(得分:0)
默认情况下,类和成员是私有的。您需要将班级和成员标记为公共或内部,以便在班级外可见。
你是对的,C#中没有友元类,尽管有嵌套类型(在其他类中定义的类)。
Why does C# not provide the C++ style 'friend' keyword?
上面的注释,如果它是公共的或内部的,你将以Program.SecureId的形式访问它是正确的,并且通常的做法是尽管没有必要使该字段成为属性。