01/10/2018, 00:44

Kiểu dữ liệu tham chiếu trong C#

cho mình hỏi kiểu dữ liệu tham chiếu là mình sử dụng thế nào,mình vẫn chưa hình dung đươc, còn kiểu giá trị thì được rồi, mong các bạn cho 1 ví dụ nho nhỏ

Jonathan Pham viết 02:53 ngày 01/10/2018

FYI Sự khác nhau giữa pass by value và pass by reference

Nhox Namby viết 02:48 ngày 01/10/2018

khó hiểu quá bạn ơi…

Jonathan Pham viết 02:58 ngày 01/10/2018

X = 5;

function A(X){
X = 10;
}

function B(&X){
X = 12;
}

A(X);
print X;
B(&X);
print X;

đại loại thế, bạn thử code trên ngôn ngữ của bạn, rồi output ra khi gọi function A, B khác nhau gì là hiểu nhé.

Nhox Namby viết 02:57 ngày 01/10/2018

cảm ơn bạn nhiều nhé …

Nhox Namby viết 02:46 ngày 01/10/2018

B(&X);

à mà B(&X); là sao bạn, giải thích tý hjhj

Jonathan Pham viết 02:45 ngày 01/10/2018

à bạn xài C# nó xài ref phải không? Mình xài php nên nó dùng &, tương đương truyền tham chiếu thôi.

Nhox Namby viết 02:56 ngày 01/10/2018

à ref out đó hã …

Quân viết 02:48 ngày 01/10/2018

hình minh họa bạn kia gửi chỉ đúng với kiểu primitive thôi bạn nhé, với các object thì sai hoàn toàn. Object được pass by value sẽ là pass by reference value, tức là không truyền object mà truyền địa chỉ tham chiếu tới object đó, nên hành động rót đầy cup cafe bên trong method vẫn là rót đầy cốc cafe tại vị trí được truyền vào method nên dẫn đến cốc cafe bên ngoài method vẫn đầy theo.

Nhox Namby viết 02:55 ngày 01/10/2018

code này tham chiếu đúng ko bạn
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Toantu
{
class Program
{
static void Main(string[] args)
{
// ví dụ tham chiếu
int thamchieu;
hello(out thamchieu);
resrence(thamchieu);
Console.ReadKey();

    }
    private static void hello( out int thamchieu)
    {
        thamchieu = 8; ;
        Console.WriteLine(thamchieu);
    }
    private static void resrence(int thamchieu)
    {
        thamchieu++;
        Console.WriteLine(thamchieu);
    }
}

}

Quân viết 02:59 ngày 01/10/2018

method cho phép pass by ref trong c# sẽ yêu cầu bạn dùng 1 trong 2 từ khóa ref hoặc out trước khai báo của param cần pass by ref của method. Bạn chỉ cần nhớ thế thôi.
Chiếu theo khái niệm trên thì

private static void hello( out int thamchieu) // pass by ref

private static void resrence(int thamchieu) // không phải pass by ref
Nhox Namby viết 02:47 ngày 01/10/2018

ok cảm ơn bạn nhiều!! mình đang tự học c#, cko mình hỏi cách học lạp trình là ghi nhớ cú pháp phải ko

Bài liên quan
0