2014-12-29 2 views
1

Ex. http://msdn.microsoft.com/en-us/library/bew39x2a%28v=vs.110%29.aspx Мне интересно, должны ли методы C#, такие как BeginSend, BeginReceive и т. Д., Статически, и если да, то почему?Do C# Async Socket (BeginSend/BeginReceive и т. Д.) Должны быть статическими? Если да, то почему?

В настоящее время я создаю архитектуру Client/Server, и я хочу получить доступ к нестационарным методам/свойствам из методов BeginSend/CallBack.

+0

Нет, они этого не делают - это просто плохой/ленивый пример. Просто создайте обратные вызовы, чтобы они не были статическими методами и * viola *. – user2864740

ответ

6

Во-первых BeginSend/BeginReceive являются не статическими (как показано в примере кода вы связаны, о чем свидетельствует их быть вызван через экземпляр Socket). Причина, по которой они являются в статических методах, заключается в том, что образец должен был работать от Main без каких-либо дополнительных определений классов.

Main - метод static, поэтому методы, которые он непосредственно вызывает, также обозначены static. Затем это распространяется на все другие методы в выборке.

Короче говоря, No, нет необходимости использовать эти функции из static методов.

По этой же причине методы обратного вызова - static. Если вы выполнили первоначальный вызов до BeginSend с помощью встроенного метода, вы можете без проблем использовать встроенный обратный вызов/данные.

Смежные вопросы