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ỏ
Kiểu dữ liệu tham chiếu trong C#
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é.
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.
à 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.
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);
}
}
}
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
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