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ỏ

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

1 Like

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

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é.

1 Like

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

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

à 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.

1 Like

à ref out đó hã …

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.

1 Like

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);
    }
}

}

1 Like

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
2 Likes

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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?