[C#, Этюд] Unassigned variable
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.03.10 12:02
Оценка: 14 (2)
У меня в программе есть такой метод:
static void Main()
{
    X x;
    x.Foo();
}


и при этом она компилируется без ошибок. X — это класс. Как такое может быть?
Re: [C#, Этюд] Unassigned variable
От: Lloyd Россия  
Дата: 22.03.10 12:11
Оценка:
Здравствуйте, nikov, Вы писали:

N>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?


Foo — не extension-метод?
Re[2]: [C#, Этюд] Unassigned variable
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.03.10 12:12
Оценка:
Здравствуйте, Lloyd, Вы писали:

N>>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?


L>Foo — не extension-метод?


Могу сделать extension, могу не extension.
Re: [C#, Этюд] Unassigned variable
От: Ellin Россия www.rsdn.ru
Дата: 22.03.10 12:14
Оценка: :))) :))) :)
N>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?
Очень просто, просто компилятор вас боится, nikov.
Re: [C#, Этюд] Unassigned variable
От: jitm  
Дата: 22.03.10 12:31
Оценка: -1
Здравствуйте, nikov, Вы писали:

N>У меня в программе есть такой метод:

N>
N>static void Main()
N>{
N>    X x;
N>    x.Foo();
N>}
N>


N>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?


X — это структура.
Метод Foo() паблик.
Re[2]: [C#, Этюд] Unassigned variable
От: jitm  
Дата: 22.03.10 12:31
Оценка: +1
Здравствуйте, jitm, Вы писали:

J>Здравствуйте, nikov, Вы писали:


N>>У меня в программе есть такой метод:

N>>
N>>static void Main()
N>>{
N>>    X x;
N>>    x.Foo();
N>>}
N>>


N>>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?


J>X — это структура.

J>Метод Foo() паблик.
J>
Ой лажанул Не досмотрел что Х это класс ...
Re: [C#, Этюд] Unassigned variable
От: desco США http://v2matveev.blogspot.com
Дата: 22.03.10 12:33
Оценка:
Здравствуйте, nikov, Вы писали:

N>У меня в программе есть такой метод:

N>
N>static void Main()
N>{
N>    X x;
N>    x.Foo();
N>}
N>


N>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?


class X
{
    public void Foo() { }
}
class Program
{
    private static X x; // \u0445
    public static void Main()
    {
        X х; // \u0078
        x.Foo();
    }
}
Re[2]: [C#, Этюд] Unassigned variable
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.03.10 12:36
Оценка:
Здравствуйте, desco, Вы писали:

D>
D>class X
D>{
D>    public void Foo() { }
D>}
D>class Program
D>{
D>    private static X x; // \u0445
D>    public static void Main()
D>    {
D>        X х; // \u0078
D>        x.Foo();
D>    }
D>}
D>



Ну, это ты исказил мой исходный код. Это же всё-таки была не картинка.
Re[2]: [C#, Этюд] Unassigned variable
От: Muxa  
Дата: 22.03.10 12:37
Оценка:
ай. опередил меня.
у меня такое же решение.
Re: [C#, Этюд] Unassigned variable
От: Пельмешко Россия blog
Дата: 22.03.10 12:46
Оценка:
Здравствуйте, nikov, Вы писали:

N>У меня в программе есть такой метод:

N>
N>static void Main()
N>{
N>    X x;
N>    x.Foo();
N>}
N>


N>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?


У меня сумасшедшая идея была, связанная с особенностью extension-методов в VB.NET:

VBAssembly.dll
Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices

Public Class X
End Class

Public Module Extensions
    <Extension()> _
    Public Sub Foo(<Out()> ByRef x As X)
    End Sub
End Module
и
using VBAssembly;

class Program
{
    static void Main()
    {
        X x;
        x.Foo();
    }
}


Но не компилится, сволочь

error CS1620: Argument 1 must be passed with the 'out' keyword

Re[2]: [C#, Этюд] Unassigned variable
От: andrb Украина http://bezzub.com
Дата: 22.03.10 12:49
Оценка:
Навеяно предыдущим решением:

class X
{
    public void Foo() { }
}

public class x
{
    public static void Foo() {}
}
    
class Program
{
    public static void Main()
    {
        X х;
        x.Foo();
    }
}
Re[3]: [C#, Этюд] Unassigned variable
От: Ellin Россия www.rsdn.ru
Дата: 22.03.10 13:01
Оценка:
Здравствуйте, andrb, Вы писали:
А толку то... этюд то пока без решения.
Re[3]: [C#, Этюд] Unassigned variable
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.03.10 13:01
Оценка:
Здравствуйте, andrb, Вы писали:

A>
A>class Program
A>{
A>    public static void Main()
A>    {
A>        X х;
A>        x.Foo();
A>    }
A>}
A>


В постановке задачи оба 'x' в методе Main — одинаковые символы.
Re[3]: [C#, Этюд] Unassigned variable
От: Аноним  
Дата: 22.03.10 13:06
Оценка:
Здравствуйте, andrb, Вы писали:

A>class Program

A>{
A> public static void Main()
A> {
A> X х;
A> x.Foo();
A> }
A>}

A>[/c#]

Тут х русская буква "х" ?
Re[4]: [C#, Этюд] Unassigned variable
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.03.10 13:07
Оценка:
Здравствуйте, Аноним, Вы писали:

A>>class Program

A>>{
A>> public static void Main()
A>> {
A>> X х;
A>> x.Foo();
A>> }
A>>}

A>>[/c#]

А>Тут х русская буква "х" ?

Одна из них — да.
Re: [C#, Этюд] Unassigned variable
От: ksg71 Германия  
Дата: 22.03.10 13:34
Оценка: 81 (6)
Здравствуйте, nikov, Вы писали:

N>У меня в программе есть такой метод:

N>
N>static void Main()
N>{
N>    X x;
N>    x.Foo();
N>}
N>


N>и при этом она компилируется без ошибок. X — это класс. Как такое может быть?




class Program
    {
        static void Main()
        {
            X x;
            x.Foo();
        }
    }

    class X
    {
        [System.Diagnostics.Conditional("SOME_UNDEFINED_CONSTANT")]
        public void Foo() { }
    }
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re[2]: [C#, Этюд] Unassigned variable
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.03.10 13:35
Оценка:
Здравствуйте, ksg71, Вы писали:

K>
K>        [System.Diagnostics.Conditional("SOME_UNDEFINED_CONSTANT")]
K>        public void Foo() { }
K>



Верно! Другой вариант — partial метод без имплементации.
Re[3]: [C#, Этюд] Unassigned variable
От: ksg71 Германия  
Дата: 22.03.10 13:39
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, ksg71, Вы писали:


K>>
K>>        [System.Diagnostics.Conditional("SOME_UNDEFINED_CONSTANT")]
K>>        public void Foo() { }
K>>



N>Верно! Другой вариант — partial метод без имплементации.


partial даже более "честное" решение
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re[4]: [C#, Этюд] Unassigned variable
От: divergo  
Дата: 22.03.10 14:13
Оценка:
K>partial даже более "честное" решение

а по-моему они оба нечестные т.к еще со 2-го фрейморка
а я-то кинулся искать, думал в 4-м сделали как-то хитро ну очень ленивую инициализацию

вот вам мой вариант за это

#if FirstMain
class A
{
    static void Main()
    {
        X x;
        x.Foo();
        Console.Read();
    }
}
#endif

Re[5]: [C#, Этюд] Unassigned variable
От: nikov США http://www.linkedin.com/in/nikov
Дата: 22.03.10 14:15
Оценка:
Здравствуйте, divergo, Вы писали:

D>вот вам мой вариант за это


D>
D>#if FirstMain
D>class A
D>{
D>    static void Main()
D>    {
D>        X x;
D>        x.Foo();
D>        Console.Read();
D>    }
D>}
D>#endif
D>

D>

В условии сказано: "У меня в программе есть такой метод". А это не метод, это skipped-section.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.