在另一个类中实例化一个类的对象

时间:2014-10-21 00:53:19

标签: c# .net class methods

有人可以让我知道如何在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();



        }
    }



}

1 个答案:

答案 0 :(得分:0)

默认情况下,类和成员是私有的。您需要将班级和成员标记为公共或内部,以便在班级外可见。

你是对的,C#中没有友元类,尽管有嵌套类型(在其他类中定义的类)。

Why does C# not provide the C++ style 'friend' keyword?

上面的注释,如果它是公共的或内部的,你将以Program.SecureId的形式访问它是正确的,并且通常的做法是尽管没有必要使该字段成为属性。