iT邦幫忙

0

C# 用法問題?

Luke 2018-07-05 16:54:281065 瀏覽

請問 在範例中【String[] listUnpaged = sampleData.Split('\n');】
為什麼可以用【listUnpaged.ToPagedList(page ?? 1, pageSize);】

而我寫的練習中
為什麼不可以用【datas.ToPagedList(page ?? 1, pageSize);】
這個用法叫什麼?

範例Controller

...略...
const int pageSize = 20;
// retrieve list from database/whereverand
string sampleData = new StreamReader(Server.MapPath("~/App_Data/Names.txt")).ReadToEnd();
String[] listUnpaged = sampleData.Split('\n');
 // page the list
var listPaged = listUnpaged.ToPagedList(page ?? 1, pageSize);

練習Controller

...略...
const int pageSize = 20;
// retrieve list from database/whereverand
List<ITAccountModel> datas = com.WEB.ViewModel.DemoVM.Test.TestDatas;
 // page the list
var listPaged = X.PagedList.PagedListExtensions.ToPagedList(datas,page ?? 1, pageSize);

X.PagedList.PagedListExtensions.ToPagedList

namespace X.PagedList
{
public static class PagedListExtensions
{
	...略...
	[AsyncStateMachine(typeof(PagedListExtensions.<ToListAsync>d__7<>))]
	public static Task<List<T>> ToListAsync<T>(this IEnumerable<T> superset);
	public static IPagedList<T> ToPagedList<T>(this IEnumerable<T> superset, int pageNumber, int pageSize);
	public static IPagedList<T> ToPagedList<T>(this IEnumerable<T> superset);
	public static IPagedList<T> ToPagedList<T, TKey>(this IQueryable<T> superset, Expression<Func<T, TKey>> keySelector, int pageNumber, int pageSize);
	public static IPagedList<T> ToPagedList<T, TKey>(this IEnumerable<T> superset, Expression<Func<T, TKey>> keySelector, int pageNumber, int pageSize);
	...略...
}
}

1 個回答

1
暐翰
iT邦大師 1 級 ‧ 2018-07-05 17:01:37
最佳解答

可以的
因為是靜態類別的擴展方法
假如要直接呼叫要帶參數

void Main()
{
	const int pageSize = 2;
	int page = 1;
	// retrieve list from database/whereverand
	string sampleData = @"IT幫一號
IT幫二號
IT幫三號";
	String[] listUnpaged = sampleData.Split('\n');
    
	// 直接呼叫方式
	var listPaged2 = X.PagedList.PagedListExtensions.ToPagedList(listUnpaged,page, pageSize);
}

Luke iT邦新手 3 級 ‧ 2018-07-05 17:37:12 檢舉

那請問擴展方法 (Extension Methods)
為什麼不可以用【datas.ToPagedList(page ?? 1, pageSize);】
/images/emoticon/emoticon06.gif
https://ithelp.ithome.com.tw/upload/images/20180705/20096781PQvjINoRvB.png

暐翰 iT邦大師 1 級 ‧ 2018-07-05 18:07:24 檢舉

擴展方法 前面有this關鍵字的參數
使用方式有兩種
1.類型一樣的物件.方法(除了this的參數)呼叫
2.方式(帶this一樣的類型,加其他參數)


總結:
差別就在可不可以省略this參數

我要發表回答

立即登入回答