Общая короткая инструкция для того, чтобы пройти мимо параметров метода касательно или значением (C#)?

Проблема в том, что если ваши таблицы не связаны, вы не можете определить, как к ним присоединиться, поэтому вам придется произвольно присоединиться к ним, что приведет к декартовому произведению:

select Table1.col1, Table1.col2, Table2.col3, Table2.col4
from Table1
cross join Table2

Если бы вы имели Например, следующие данные:

col1  col2
a     1
b     2

col3  col4
y     98
z     99

В итоге вы получите следующее:

col1  col2  col3  col4
a     1     y     98
a     1     z     99
b     2     y     98
b     2     z     99

Это то, что вы ищете? Если нет, и у вас есть некоторые способы связывания таблиц, то вам нужно будет включить их в объединение двух таблиц, например:

select Table1.col1, Table1.col2, Table2.col3, Table2.col4
from Table1
inner join Table2
on Table1.JoiningField = Table2.JoiningField

. связан, давая вам ваш результат.

6
задан Don Ronn 22 May 2009 в 08:49
поделиться

3 ответа

Для типов значений:

  • Если вы просто хотите использовать значение, содержащееся, И НЕ изменять его в исходном месте, используйте метод передачи по умолчанию (по значению)
  • Если вам нужно изменить его в исходном магазин, используйте исх. Пример:

     int a = -3;
    
    protected void EnsurePositiveValues ​​(значение ref int)
    {
     если (значение <0)
     значение = 0;
    }
    

Для ссылочных типов:

  • Если вам нужно просто использовать экземпляр или изменить его, используйте метод передачи по умолчанию (по ссылке; следует вызывать «по ссылке копии»)
  • Если вам нужно (повторно) назначить в исходной ссылке используйте исх. Пример:

     Пользователь u = MembershipAPI.GetUser (312354);
    
    protected void EnsureUser (ссылка пользователя пользователя)
    {
     если (пользователь == нуль)
     пользователь = новый пользователь ();
    }
    
4
ответ дан 17 December 2019 в 04:51
поделиться

Также необходимо принять во внимание типы значений и ссылки. При передаче ссылочного типа методу в качестве параметра вы передаете переменной указатель . Это означает, что внутри метода вы можете вносить изменения в переменную, и они будут доступны для кода, который вызвал метод, однако, если вы установите для него значение null, вы устанавливаете только указатель на null, и переменная будет нетронутой, когда вы метод возвращает.

1
ответ дан 17 December 2019 в 04:51
поделиться

Не уверен, что это действительно ответ на ваш вопрос, но я нашел одно хорошее использование передачи значения по ссылке (с использованием ключевого слова out) ...

int i = 0;

if (int.TryParse("StringRepresentation", out i)
{
    // do something with i which has taken the value of a the previous successful TryParse
}
0
ответ дан 17 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: